<?php
/**
 * Zead
 *
 * LICENSE	
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://www.opensource.org/licenses/bsd-license.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to eu@marcelomx.com so we can send you a copy immediately.
 *
 * @category   Zead
 * @author     Marcelo Rodrigues Gonzaga <eu@marcelomx.com>
 * @copyright  Copyright (c) 2008 Marcelo Rodrigues Gonzaga
 * @link       http://code.google.com/p/zead 
 * @license    http://www.opensource.org/licenses/bsd-license.php     New BSD License
 *
 **/


/** @see Zead_Html_Helper_Abstract **/
require_once 'Zead/Html/Helper/Abstract.php';

/** @see Zead_Uri **/
require_once 'Zead/Uri.php';

/**
 * @category   Zead
 * @package    Zead_Html
 * @subpackage Zead_Html_Helper
 * @copyright  Copyright (c) 2008 Marcelo Rodrigues Gonzaga 
 * @license    http://www.opensource.org/licenses/bsd-license.php     New BSD License  
 */
class Zead_Html_Helper_Iconizer extends Zead_Html_Helper_Abstract 
{
	/**
	 * Executando o helper. Como os atributos podem ser variados e ser uma ordem
	 * de obrigatoriedade e com diferentes funções assumidas, então os atributos
	 * podem ser passados em qualquer ordem.
	 *
	 * @param array $attributes
	 */
	public function iconizer($className = 'external', $target = '_blank') 
	{
		foreach ($this->html->documentElement->select('a') as $a) {
			if (!$a->hasAttribute('href'))
				continue;

			$href = $a->getAttribute('href');
			
			if (!preg_match("/^(http|https|file|ftp):\/\//ie", $href)) {
				$uri = new Zead_Uri($href);
				$ext = $uri->getPathInfo('extension');

				if (preg_match("/^(doc|pdf|ppt|rtf|xls)$/ie", strtolower($ext))) {
					$a->setAttribute('target',$target);
				}
				continue;				
			}
			$a->setAttribute('target', $target);
			$a->setAttribute('rel', 'external');
			$a->addClassName($className);			
		}
	}
}

